gtk/gtkwidget.c (gtk_widget_real_grab_focus):
authorOwen Taylor <otaylor@redhat.com>
Mon, 15 Feb 1999 20:50:47 +0000 (20:50 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Mon, 15 Feb 1999 20:50:47 +0000 (20:50 +0000)
Mon Feb 15 11:13:01 1999  Owen Taylor  <otaylor@redhat.com>

* gtk/gtkwindow.c (gtk_window_set_focus):
  gtk/gtkwidget.c (gtk_widget_real_grab_focus):

If the focus widget is the same, but does not currently
have the focus, call gtk_window_set_focus(). This is needed
so that click focusing with GtkPlug works correctly.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkwidget.c
gtk/gtkwindow.c

index e8ad7db35555fc7d058b39e5d171d58158711f55..0087c0eaf5442e1c9e42df37d3587d018cf88034 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Mon Feb 15 11:13:01 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_set_focus): 
+         gtk/gtkwidget.c (gtk_widget_real_grab_focus):
+
+       If the focus widget is the same, but does not currently
+       have the focus, call gtk_window_set_focus(). This is needed
+       so that click focusing with GtkPlug works correctly.
+
 Mon Feb 15 07:45:28 1999  Tim Janik  <timj@gtk.org>
 
        * configure.in (--enable-debug): default to yes for development trees.
index e8ad7db35555fc7d058b39e5d171d58158711f55..0087c0eaf5442e1c9e42df37d3587d018cf88034 100644 (file)
@@ -1,3 +1,12 @@
+Mon Feb 15 11:13:01 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_set_focus): 
+         gtk/gtkwidget.c (gtk_widget_real_grab_focus):
+
+       If the focus widget is the same, but does not currently
+       have the focus, call gtk_window_set_focus(). This is needed
+       so that click focusing with GtkPlug works correctly.
+
 Mon Feb 15 07:45:28 1999  Tim Janik  <timj@gtk.org>
 
        * configure.in (--enable-debug): default to yes for development trees.
index e8ad7db35555fc7d058b39e5d171d58158711f55..0087c0eaf5442e1c9e42df37d3587d018cf88034 100644 (file)
@@ -1,3 +1,12 @@
+Mon Feb 15 11:13:01 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_set_focus): 
+         gtk/gtkwidget.c (gtk_widget_real_grab_focus):
+
+       If the focus widget is the same, but does not currently
+       have the focus, call gtk_window_set_focus(). This is needed
+       so that click focusing with GtkPlug works correctly.
+
 Mon Feb 15 07:45:28 1999  Tim Janik  <timj@gtk.org>
 
        * configure.in (--enable-debug): default to yes for development trees.
index e8ad7db35555fc7d058b39e5d171d58158711f55..0087c0eaf5442e1c9e42df37d3587d018cf88034 100644 (file)
@@ -1,3 +1,12 @@
+Mon Feb 15 11:13:01 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_set_focus): 
+         gtk/gtkwidget.c (gtk_widget_real_grab_focus):
+
+       If the focus widget is the same, but does not currently
+       have the focus, call gtk_window_set_focus(). This is needed
+       so that click focusing with GtkPlug works correctly.
+
 Mon Feb 15 07:45:28 1999  Tim Janik  <timj@gtk.org>
 
        * configure.in (--enable-debug): default to yes for development trees.
index e8ad7db35555fc7d058b39e5d171d58158711f55..0087c0eaf5442e1c9e42df37d3587d018cf88034 100644 (file)
@@ -1,3 +1,12 @@
+Mon Feb 15 11:13:01 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_set_focus): 
+         gtk/gtkwidget.c (gtk_widget_real_grab_focus):
+
+       If the focus widget is the same, but does not currently
+       have the focus, call gtk_window_set_focus(). This is needed
+       so that click focusing with GtkPlug works correctly.
+
 Mon Feb 15 07:45:28 1999  Tim Janik  <timj@gtk.org>
 
        * configure.in (--enable-debug): default to yes for development trees.
index e8ad7db35555fc7d058b39e5d171d58158711f55..0087c0eaf5442e1c9e42df37d3587d018cf88034 100644 (file)
@@ -1,3 +1,12 @@
+Mon Feb 15 11:13:01 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_set_focus): 
+         gtk/gtkwidget.c (gtk_widget_real_grab_focus):
+
+       If the focus widget is the same, but does not currently
+       have the focus, call gtk_window_set_focus(). This is needed
+       so that click focusing with GtkPlug works correctly.
+
 Mon Feb 15 07:45:28 1999  Tim Janik  <timj@gtk.org>
 
        * configure.in (--enable-debug): default to yes for development trees.
index e8ad7db35555fc7d058b39e5d171d58158711f55..0087c0eaf5442e1c9e42df37d3587d018cf88034 100644 (file)
@@ -1,3 +1,12 @@
+Mon Feb 15 11:13:01 1999  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwindow.c (gtk_window_set_focus): 
+         gtk/gtkwidget.c (gtk_widget_real_grab_focus):
+
+       If the focus widget is the same, but does not currently
+       have the focus, call gtk_window_set_focus(). This is needed
+       so that click focusing with GtkPlug works correctly.
+
 Mon Feb 15 07:45:28 1999  Tim Janik  <timj@gtk.org>
 
        * configure.in (--enable-debug): default to yes for development trees.
index 09794e0d8849704e69c2609540d919084e9a246d..ef1954241cd901ad4d6cdcba4ead7b5558aa5a8a 100644 (file)
@@ -3047,7 +3047,16 @@ gtk_widget_real_grab_focus (GtkWidget *focus_widget)
          widget = GTK_WINDOW (toplevel)->focus_widget;
          
          if (widget == focus_widget)
-           return;
+           {
+             /* We call gtk_window_set_focus() here so that the
+              * toplevel window can request the focus if necessary.
+              * This is needed when the toplevel is a GtkPlug
+              */
+             if (!GTK_WIDGET_HAS_FOCUS (widget))
+               gtk_window_set_focus (GTK_WINDOW (toplevel), focus_widget);
+
+             return;
+           }
          
          if (widget)
            {
index 706783c29aa4ad6c2355202fc9c7877c274e01c8..d6edabca104006e74100bbe59ab9ade1608ba306 100644 (file)
@@ -361,7 +361,8 @@ gtk_window_set_focus (GtkWindow *window,
       g_return_if_fail (GTK_WIDGET_CAN_FOCUS (focus));
     }
 
-  if (window->focus_widget != focus)
+  if ((window->focus_widget != focus) ||
+      (focus && !GTK_WIDGET_HAS_FOCUS (focus)))
     gtk_signal_emit (GTK_OBJECT (window), window_signals[SET_FOCUS], focus);
 }